/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pokerbots;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import pokerbot.ParticanteDos;
import pokerbot.Participante;
import pokerbot.ParticipanteUno;

/**
 *
 * @author david
 */
public class Main {
     static mesa torneini;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        torneini = new mesa();
        int dinero = 100;
        ArrayList<Participante> listaParticipantes = new ArrayList();
        ParticipanteUno par1 = new ParticipanteUno();
        ParticanteDos par2 = new ParticanteDos();
        listaParticipantes.add(par1);
        listaParticipantes.add(par2);
        ArrayList miArrayRespuestas = new ArrayList();
        torneini.iniciarmesa(listaParticipantes.size(), dinero);
        for (int i=0;i< listaParticipantes.size();i++){
            Participante unparticipante = listaParticipantes.get(i);
            boolean respuesta = unparticipante.igualarApuesta(torneini.getCartasComunes(), ((jugador)torneini.getJugadores().get(i)).getCartas(), dinero);
            miArrayRespuestas.add(respuesta);
        }
    }
    static void mostrarGanador( List listaRespuestas){
        definirGanador(listaRespuestas);
    }
    static int definirGanador (  List listaRespuestas  ){
        int indiceGanador = 0;
        ArrayList listaQueIgualan = new ArrayList();
        ArrayList indicesQueIgualan = new ArrayList();
        for ( int i=0;i<listaRespuestas.size();i++  ){
            if ( (Boolean)listaRespuestas.get(i)){
                listaQueIgualan.add( (Boolean)listaRespuestas.get(i) );
                indiceGanador = i;
                indicesQueIgualan.add(i);
            }
        }
        if ( listaQueIgualan.size() == 1 ){
           return indiceGanador;
        } else {
          return  definirMejorCombinacion(indicesQueIgualan);
        } 
    }
    static int definirMejorCombinacion(   List jugadoresQueIgualan ){
        int sumaNumerosCartas = 0;
        int indiceMejorCombinacion = 0;
        for ( int i =0;i<jugadoresQueIgualan.size();i++){
            
        }
        
        return -1;
    }
}
class carta{
  private int palo;
  private int numero;
  private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public int getPalo() {
        return palo;
    }

    public void setPalo(int palo) {
        this.palo = palo;
    }
}
class jugador {
    private ArrayList cartas;
    private int dinero;

    public ArrayList getCartas() {
        return cartas;
    }

    public void setCartas(ArrayList cartas) {
        this.cartas = cartas;
    }

    public int getDinero() {
        return dinero;
    }

    public void setDinero(int dinero) {
        this.dinero = dinero;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    private int id;
}
class mesa{
   int pozo;
   private ArrayList jugadores;
   private ArrayList cartas; 
   private ArrayList cartasComunes;

    public ArrayList getCartas() {
        return cartas;
    }

    public void setCartas(ArrayList cartas) {
        this.cartas = cartas;
    }

    public ArrayList getCartasComunes() {
        return cartasComunes;
    }

    public void setCartasComunes(ArrayList cartasComunes) {
        this.cartasComunes = cartasComunes;
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public ArrayList getJugadores() {
        return jugadores;
    }

    public void setJugadores(ArrayList jugadores) {
        this.jugadores = jugadores;
    }

    public int getPozo() {
        return pozo;
    }

    public void setPozo(int pozo) {
        this.pozo = pozo;
    }
   int id;
   public void iniciarmesa(int numerojugadores, int dinero){
       this.jugadores = new ArrayList(numerojugadores);
       int dineroPorjugador = dinero/numerojugadores;
       for ( int i=0;i<this.jugadores.size();i++ ){
          ((jugador)this.jugadores.get(i)).setDinero(dineroPorjugador);
          ((jugador)this.jugadores.get(i)).setId(i);
       }
       crearBaraja();
       barajar();
       repartirCartasComunes();
       repartirCartasJugadores();
   }
   private void crearBaraja(){
       for ( int i=0;i<54;i++ ){
           for( int j=0;j<4;j++){
               for ( int l=0;l<13;l++){ 
                   carta miCarta = new carta();
                   miCarta.setId(i);
                   miCarta.setPalo(j);
                   miCarta.setNumero(l);
                   this.cartas.add(miCarta);
               }
           }
       }
   }
   private void barajar(){
      Random rnd = new Random();
      int i=0;
      ArrayList nuevaLista = new ArrayList();
      while ( this.cartas.size() > 0 ){
          i = rnd.nextInt( this.cartas.size());
          nuevaLista.add( cartas.get(i));
          this.cartas.remove(i);
      }
      this.cartas = nuevaLista;
   }
   private void repartirCartasJugadores(){
       ArrayList misCartas = null;
       for ( int i=0; i < this.jugadores.size();i++){
           jugador mijugador = (jugador)this.jugadores.get(i);
           misCartas = new ArrayList();
           misCartas.add(cartas.get(0));
           misCartas.add(cartas.get(1));
           cartas.remove(0);
           cartas.remove(1);
           mijugador.setCartas(misCartas);
       }
   }
   private void repartirCartasComunes(){
       this.cartasComunes = new ArrayList();
       for ( int i=0; i < 5;i++){
            cartasComunes.add(cartas.get(i));
           cartas.remove(i);
       }
   }
}